<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

  <xsl:output method="xml" omit-xml-declaration="yes"/>

  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
  <!-- Templates de génération HTML                                                                                  -->
  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->

  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
  <!-- Génération du HTML pour une contrainte donnée
       Dans ce template, le contexte est une contrainte (tag <cnt>)
    -->
  <xsl:template name="genHtmForCnt" >
    <xsl:param name="p_lgnCls"/>
    <tr>
      <xsl:attribute name="class"><xsl:value-of select="$p_lgnCls"/></xsl:attribute>
      <td>
        <xsl:value-of select="nom"/>
      </td>
      <td>
        <xsl:value-of select="cntEvn"/>
      </td>
      <td>
        <xsl:value-of select="txtCnt"/>
      </td>
    </tr>
  </xsl:template>

  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
  <!-- Génération du HTML pour une liste de contraintes
       Dans ce template, le contexte est une liste de contraintes (tag <cntLst>)
    -->
  <xsl:template name="genHtmForCntLst" >

    <h2>Liste des contraintes</h2>

    <xsl:if test="count( cnt ) > 0" >

      <table class="tbl">
        <tr class="tblLgnHdr">
          <th>Nom</th>
          <th>Déclencheur</th>
          <th>Texte</th>
        </tr>

          <xsl:for-each select="cnt">
            <xsl:call-template name="genHtmForCnt">
              <xsl:with-param name="p_lgnCls">
                <xsl:choose>
                  <xsl:when test="(position() mod 2) = 0">tblLgnPai</xsl:when>
                  <xsl:otherwise>tblLgnImp</xsl:otherwise>
                </xsl:choose>
              </xsl:with-param>
            </xsl:call-template>
          </xsl:for-each>

      </table>
    </xsl:if>

  </xsl:template>

  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
  <!-- Génération du HTML pour une valeur énumérée donnée
       Dans ce template, le contexte est une valeur énumérée (tag <valenm>)
    -->
  <xsl:template name="genHtmForValEnm" >
    <xsl:param name="p_lgnCls"/>
    <tr>
      <xsl:attribute name="class"><xsl:value-of select="$p_lgnCls"/></xsl:attribute>
      <td>
        <xsl:value-of select="nom"/>
      </td>
      <td>
        <xsl:value-of select="dsc"/>
      </td>
    </tr>
  </xsl:template>

  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
  <!-- Génération du HTML pour une liste de valeurs énumérées
       Dans ce template, le contexte est une liste de valeurs énumérées (tag <valenmLst>)
    -->
  <xsl:template name="genHtmForValEnmLst" >

    <h2>Liste des valeurs énumérées</h2>

    <xsl:if test="count( valenm ) > 0" >

      <table class="tbl">
        <tr class="tblLgnHdr">
          <th>Nom</th>
          <th>Description</th>
        </tr>

        <xsl:for-each select="valenm">
          <xsl:sort select="nom"/>
          <xsl:call-template name="genHtmForValEnm">
            <xsl:with-param name="p_lgnCls">
              <xsl:choose>
                <xsl:when test="(position() mod 2) = 0">tblLgnPai</xsl:when>
                <xsl:otherwise>tblLgnImp</xsl:otherwise>
              </xsl:choose>
            </xsl:with-param>
          </xsl:call-template>
        </xsl:for-each>

      </table>
    </xsl:if>

  </xsl:template>

  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
  <!-- Templates de changement de contexte                                                                           -->
  <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->

  <xsl:template match="/">
    <!-- Rappel : Le HTML généré sera inséré dans une balise <div> -->
    <h1>Fiche détaillée du domaine <xsl:value-of select="doc/ttr"/></h1>

    <xsl:if test="count( doc/dmn ) > 0" >
      <table class="tbl">

        <tr>
          <th class="tblHdrLft">Nom</th>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/nom"/>
          </td>
        </tr>
        <tr>
          <th class="tblHdrLft">Type</th>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/dtaTyp"/>
          </td>
        </tr>
        <tr>
          <th class="tblHdrLft">Description</th>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/dsc"/>
          </td>
        </tr>
        <tr>
          <th class="tblHdrLft">Valeur minimum</th>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/valMin"/>
          </td>
        </tr>
        <tr>
          <th class="tblHdrLft">Valeur maximum</th>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/valMax"/>
          </td>
        </tr>
        <tr>
          <th class="tblHdrLft">Valeurs autorisées</th>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/val"/>
          </td>
        </tr>

        <tr>
          <td class="tblHdrLft">
            Création
          </td>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/audit/datCre"/>
          </td>
        </tr>
        <tr>
          <td class="tblHdrLft">
            Dern. màj
          </td>
          <td class="tblCllHdr">
            <xsl:value-of select="doc/dmn/dmn/audit/datMaj"/>
          </td>
        </tr>
      </table>

      <!-- // Les valeurs énumérées du domaine ///////////////////////////////////////////////////// -->
      <xsl:for-each select="doc/dmn/valenmLst">
        <xsl:call-template name="genHtmForValEnmLst" />
      </xsl:for-each>

      <!-- // Les contraintes du domaine /////////////////////////////////////////////////////////// -->
      <xsl:for-each select="doc/dmn/cntLst">
        <xsl:call-template name="genHtmForCntLst" />
      </xsl:for-each>

    </xsl:if>

  </xsl:template>

</xsl:stylesheet>